定点数的加减法


[toc]

1. 变补:

$[-Y]_{补}$被称为$[Y]_{补}$的机器负数,由$[Y]_{补}求[-Y]_{补}$的过程称为对[Y]补的变补

表示为:$[-Y]_{补} = [[Y]_{补}]_{变 补}$

2. 补码与变补的区别

一个负数由原码转换为补码时,符号位是不变的,仅对数值求补,而变补则不论这个数的正值是正是负,一律连同符号位取反,末位加1

在补码的加减法中,若做加法则两数直接相加,若做减法,则将被减数与减数的机器负数相加,运算结果用补码表示

表示为$[X]_{补} - [Y]_{补} = [X]_{补} + [-Y]_{补} = [X]_{补} + [[Y]_{补}]_{变 补}$

注意:

最后答案要写出真值,除非题目写了求的是补码等

3. 溢出

若X,Y异号,不会溢出

若X,Y同号,运算结果超出所能表示的范围是,溢出,大于最大正数称为正溢,小于最小负数称之为负溢

3.1 检测溢出

3.1.1 单符号位:

当两个同号的数值进行加减操作后,所得到的结果的符号位与之不同时,则发生了溢出。

缺点:如果符号位的后一位在运算过后产生了进位,可能会影响检测溢出结果的正确性

3.1.2 采用进位位

在考虑了进位对符号位的影响后,进行改进得到的

如果符号位产生进位而最高有效位没有进位时,发生负溢

如果符号位没有进位,而最高有效位发生进位时,发生正溢

3.1.3 采用变形补码(双符号位补码)

双符号位的含义如下:

$S_{S1}S_{S2}=00$,结果为正数,无溢出

$S_{S1}S_{S2}=01$,正溢

$S_{S1}S_{S2}=10$,负溢

$S_{S1}S_{S2}=11$,结果为负数,无溢出